package cn.openea.perpartner.meily.web.service.logistics.businessModule;

import cn.openea.perpartner.meily.constant.enums.ExpressCompany;
import cn.openea.perpartner.meily.constant.enums.LogisticsModule;
import cn.openea.perpartner.meily.web.entity.LogisticsInfo;
import lombok.NonNull;

/**
 * @author ysk
 * @version 1.0.1
 * @Description TODO
 * @createTime 2023年05月10日 14:34:00
 */
public interface LogisticsModuleService {


    /**
     * 对应枚举值
     * {@link LogisticsModule}
     */
    String GROUP_BUY_LOGISTICS_QUERY = "group_buy_module";
    String EVALUATION_LOGISTICS_QUERY = "evaluation_module";
    String SAMPLES_LOGISTICS_QUERY = "samples_module";

    /**
     * 根据对应的模块Id获取物流信息
     * 如果 测评的Id ,团购订单的Id等
     * 查自己表的，信息可能不是实时的
     *
     * @param moduleId 对应模块的数据ID
     */
    LogisticsInfo findByModuleId(String moduleId);

    /**
     * 物流信息更改
     * 发货的时候，需要先同步物流在改快递数据
     * @param expressCompany 快递公司
     * @param id             id
     * @param courierNumber  快递单号
     */
    void logisticsChange(ExpressCompany expressCompany, String id, String courierNumber);


    /**
     * 实时物流查询
     *
     * @param moduleId id
     * @return LogisticsInfo
     */
    LogisticsInfo findRealTimeLogistics(String moduleId);

    /**
     * 物流对应的业务状态同步
     *
     * @param logisticsInfo 物流实体
     */
    void businessStatusSync(LogisticsInfo logisticsInfo);

    /**
     * 业务延迟收货
     * @param id
     */
    void businessDelayedReceipt(String id,int days);

    /**
     * 修改对应的业务状态为已完成
     * @param moduleId
     */
    void businessStatusFinish(String moduleId);
}
